
/**
 * @Project : Clion_ProgrammingExercises
 * @File : 3
 * @Author : WangRuoyu 
 * @Date : 2023/5/11 17:07
 */

#include "iostream"
#include "cstring"
#include "algorithm"
#include "unordered_map"
#include "vector"

using namespace std;

int main() {
    int m, n;
    cin >> m >> n;
    string strs[m];
    unordered_map<string, string> vars;

    getchar();
    for (int i = 0; i < m; ++i) {
        getline(cin, strs[i]);
    }

    for (int i = 0; i < n; ++i) {
        string ss;
        getline(cin, ss);
        for (int j = 0; j < ss.size(); ++j) {
            if (ss[j] == '\"') {
                string key = ss.substr(0, j - 1);
                string tmp = ss.substr(j, ss.size() - j);
                string value = tmp.substr(1, tmp.size() - 2);
                vars[key] = value;
                break;
            }
        }
    }

    for (auto &str: strs) {
        for (int i = 0; i < str.size();) {
            if (i + 1 < str.size() && str[i] == '{' && str[i + 1] == '{') {
                int j = i + 3;
                string key;
                while ((str[j] != ' ' || str[j + 1] != '}' || str[j + 2] != '}') && j + 2 < str.size()) {
                    key += str[j++];
                }
                cout << vars[key];
                i = j + 3;
            } else {
                cout << str[i++];
            }
        }
        cout << endl;
    }

    return 0;
}


//int main() {
//    int m, n;
//    cin >> m >> n;
//    string strs[m];
//    string old[n];
//    string nnew[n];
//
//    getchar();
//    for (int i = 0; i < m; ++i) {
//        getline(cin, strs[i]);
//    }
//
//    for (int i = 0; i < n; ++i) {
//        string ss;
//        getline(cin, ss);
//        for (int j = 0; j < ss.size(); ++j) {
//            if (ss[j] == '\"') {
//                old[i] = ss.substr(0, j - 1);
//                string tmp = ss.substr(j, ss.size() - j);
//                nnew[i] = tmp.substr(1, tmp.size() - 2);
//                break;
//            }
//        }
//    }
//
////    for (int i = 0; i < n; ++i) {
////        cout << old[i] << "***" << nnew[i]<<endl;
////    }
//
//    for (int i = 0; i < m; ++i) {
//        for (int j = 0; j < n; ++j) {
//            string a = "{{ " + old[j] + " }}";
//            while (strs[i].find(a) != -1) {
//                strs[i].replace(strs[i].find(a), a.size(), nnew[j]);
//            }
//        }
//        int len = strs[i].size();
//        while (strs[i].find("{{ ") != -1) {
//            for (int j = strs[i].find("{{ ") + 3; j < strs[i].size(); ++j) {
//                if (j < strs[i].size() - 2 && strs[i][j] == ' ' && strs[i][j + 1] == '}' && strs[i][j + 2] == '}') {
//                    strs[i].replace(strs[i].find("{{ "), j + 3 - strs[i].find("{{ "), "");
//                    break;
//                }
//            }
//            if (len == strs[i].size()) {
//                break;
//            } else {
//                len = strs[i].size();
//            }
//        }
//    }
//
//    for (int i = 0; i < m; ++i) {
//        cout << strs[i] << endl;
//    }
//
//    return 0;
//}